#ifndef	_J_PROCESI_H_
#define	_J_PROCESI_H_

#include "dretve.h"
#include <arh/spremnik.h>

int j_stvori_proces ( void *param );
int j_zavrsi_proces ( void *param );

//poziva se pri stvaranju nove dretve
void j_proces_postavi_dretvu ( int id_procesa, void *_opd, void *kontekst,
			       void *stog, void *pokreni_dretvu,
			       void *poc_funkc, void *param );

//gotovu dretvu makni iz popisa procesa
void j_makni_dretvu_procesu ( int id_procesa, void *_opd );

//dohvati opisnik spremnika za proces
void *j_oppr_spremnik ( int id );

//pretvori u adresu za adresni prostor procesa
void *j_jup ( int id_procesa, void *adr_u_jezgri );

//pretvori u adresu za adresni prostor jezgre
void *j_puj ( int id_procesa, void *adr_u_programu );

//test
void proces_x ( void *param );

#ifdef _J_PROCESI_C_

//opisnik procesa
typedef struct _j_proces_t_ {
	int id; //identifikacijski broj procesa
	bool u_jezgri;	//radi u jezgrinom nacinu rada (razina 0)?

	j_dretva_t *dretva;	//prva dretva u procesu (ostale su u listi2)
				//kad zadnja ode obrisi proces

	arh_spremnik_t spremnik;//opisnik spremnickog prostora koji proces
				//koristi (i njegove dretve)
} j_proces_t;

#endif	/* _J_PROCESI_C_ */
#endif	/* _J_PROCESI_H_ */
